home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / Projects / Tutorial Material / Zone Tutorial / Structure Notes / 4. Advanced Timesheet Control < prev    next >
Lisp/Scheme  |  1998-10-26  |  2KB  |  64 lines

  1. Advanced Timesheet Control
  2.  
  3. Despite the restriction of maintaining a single zone resolution, 
  4. the timesheet can be used to control very complex patterns of 
  5. material. To achieve this, a single instrumental part is split 
  6. into several 'lines' each with its own symbol melody, note-length 
  7. pattern and tonality. Here is an example from STUDY2.
  8.  
  9. (compile-song-p  "ccl;output:" 1/2 "score"
  10. ; BARS          |--|----|---|-|--|---|----|-|
  11. syn1 tonal1     "- - ---    --  ---        -"
  12. syn2 chord1     " -     --          -----   "
  13. syn3 chord2     "   -     --       -     -- "
  14. bas1 chord3     "---           - --         "
  15. bas2 tonal      "    ---   ---  -  - ----  -"
  16. )
  17.  
  18. Some of the material here is ametric and the timesheet 
  19. literally 'triggers' the phrase into action. In this example 
  20. syn2 and bas2 use material whose rhythm and velocity are 
  21. generated from a sine-wave.
  22.  
  23. ; Nigel has been using tick value 96 for 1/4 note. 
  24. ; Because Nigel often mixes ticks and ratios, the function must take
  25. ; both cases into account.
  26.  
  27. (defun use-nigel-ticks (l)
  28.   (let (out)
  29.     (dolist (x l)
  30.       (if (is-length-symbol x)
  31.         (push x out)
  32.         (push (* x 5) out)))
  33.     (nreverse out)))
  34.  
  35. (setq rhy2 
  36.       (use-nigel-ticks
  37.         (vector-to-list 
  38.              (vector-round 6 192 (gen-sin 2 0.7 32 120)))))
  39.  
  40. The 32 note-length values produced lie between 6 and 192 
  41. (a demi-semiquaver and a minim) but are not quantized or 
  42. corrected in any way. 
  43.  
  44. The composer must remember that a symbol pattern that is 
  45. longer than the play/mute instructions will need to complete 
  46. its output within the following instruction - unless it is a 
  47. nested pattern. Here is a simple example:
  48.  
  49. (def-symbol
  50.    solo '(a b c d e f g)
  51. )
  52.  
  53. (def-length
  54.    solo '(1/8)
  55. )
  56.  
  57. (setq tonal (activate-tonality (major c 5)))
  58.  
  59. (compile-song-p "ccl;output:" 1/4 "score"
  60. ; BARS           |---|---| 
  61. solo   tonal    "- --  --"
  62. )
  63.  
  64.